package object;

/**
 * 构造器注意事项
 */
public class ConstructorDetail {

    public static void main(String[] args) {
        /*
            1)一个类可以定义多个不同的构造器，即构造器重载
            2)构造器名和类名要相同
            3)构造器没有返回值
            4)构造器是完成对象的初始化，并不是创建对象
            5)在创建对象时，系统自动调用该类的构造方法
            6)如果没有定义构造器，系统会自动给类生成一个默认的无参构造器
            7)一旦定义了自己的构造器，默认的构造器就覆盖了，就不能再使用默认的无参构造器
              除非显式地定义下：Dog(){}
         */

        //使用第一个构造器
        DDD d1 = new DDD("张三", 40);
        //使用第二个构造器
        DDD d2 = new DDD("张三");
        //使用默认的无参构造器
        DD dd = new DD();

    }
}

class DD{


    //如果已经定义构造器，还想使用默认构造器，需要显式定义下
    public DD(String dName) {

    }

    //默认构造器
    DD() {

    }
}

 class DDD{

    String name;

    int age;

    //第一个构造器
     public DDD(String dName, int dAge) {
         name = dName;
         age = dAge;
     }

     //第二个构造器
     public DDD(String dName) {
         name = dName;
     }
 }